/**
//定义一个函数，输入一个链表的头节点，反转该链表并输出反转后链表的头节点。 
//
// 
//
// 示例: 
//
// 输入: 1->2->3->4->5->NULL
//输出: 5->4->3->2->1->NULL 
//
// 
//
// 限制： 
//
// 0 <= 节点个数 <= 5000 
//
// 
//
// 注意：本题与主站 206 题相同：https://leetcode-cn.com/problems/reverse-linked-list/ 
// Related Topics 递归 链表 👍 300 👎 0

*/

package com.xixi.easy;

import com.xixi.dataStructure.lineList.ListNode;

public class ID_Offer_24_FanZhuanLianBiaoLcof {
public static void main(String[] args) {
Solution solution = new ID_Offer_24_FanZhuanLianBiaoLcof().new Solution();
}


//leetcode submit region begin(Prohibit modification and deletion)
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {

    ListNode newHead;
    ListNode p;
    public ListNode reverseList(ListNode head) {

        if(head == null) return head;
        if(head.next == null){
            newHead = head;
            p = head;
            return newHead;
        }

        newHead = reverseList(head.next);
        p.next = head; //下一个节点的头指向当前节点，
        head.next = null;
        p = head; //指针移动到当前节点

        return newHead;//返回的是新节点的头。

    }
}
//leetcode submit region end(Prohibit modification and deletion)




}